home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / bix03.arc / TEXTWIND.PAS < prev    next >
Pascal/Delphi Source File  |  1986-08-04  |  3KB  |  114 lines

  1. {$C-}
  2. program textwind;
  3.  
  4. const
  5.    workpage = 1;
  6.  
  7. {$I dispdef.sys }
  8. {$I bios.sys    }
  9. {$I pbios.sys   }
  10. {$I display.sys }
  11.  
  12. {$I strings.sys }
  13. {$I window.sys  }
  14. {$I colors.sys  }
  15.  
  16.  
  17. procedure newline;
  18.    begin
  19.       write(#13#10);
  20.    end;
  21.  
  22.  
  23. procedure input( var quit : boolean );
  24.    var
  25.      ch : char;
  26.      special: boolean;
  27.    begin
  28.       ch := readkey(special);
  29.       if not special then
  30.          case ch of
  31.             #32..#126  : write(ch);
  32.             #13        : newline;
  33.             #8         : backspace;
  34.             ^Y         : quit := true;
  35.          else
  36.             beep
  37.          end
  38.       else
  39.          case ch of
  40.          #75  : cursorleft;
  41.          #77  : cursorright;
  42.          #72  : cursorup;
  43.          #80  : cursordown;
  44.          #71  : Displayhome;
  45.          #79  : Displayend;
  46.          #115 : moveleft(0,0,2,MaxDisplayStack);
  47.          #116 : moveright(0,0,2,MaxDisplayStack);
  48.          #160 : moveup(0,0,1,MaxDisplayStack);
  49.          #164 : movedown(0,0,1,MaxDisplayStack);
  50.          #117 : begin
  51.                   clrscr;
  52.                   displayhome;
  53.                 end;
  54.          else
  55.             beep
  56.       end;
  57.    end;
  58.  
  59.  
  60. var
  61.    bail,quit : boolean;
  62.    ch : char;
  63. begin
  64. {
  65.    WindowInit is a required call to initialize use of screen I/O package.
  66.    SaveScreen copies the original screen data to the last position in
  67.    the screen stack. This may be restored with RestoreScreen.
  68. }
  69.    windowinit;savescreen;
  70. {
  71.    The next block of code  defines a work display screen and builds
  72.    the little window that will be dropped on top of the current screen.
  73. }
  74.    selectpage(workpage);setcursoroff;
  75.    window(20,6,60,15);clrscr;
  76.    inverseon;monoframe2;
  77.    header('Use the CRTL-Arrow keys to move window');
  78.    blinkon;footer('Press ^Y to Exit This Program');blinkoff;
  79.    inverseoff;
  80.    centertext(2,'WINDOW MOTION');
  81.    centertext(3,'TEXT ENTRY EXAMPLE');
  82.  
  83.    selectpage(0);setcursoron;
  84.  
  85. {  The Main Loop of the program. }
  86.  
  87.    repeat
  88.       quit := false;bail:=false;
  89.       plop(workpage,0);           { copy window overlay to hardware }
  90.       repeat
  91.         input(quit)
  92.       until quit;
  93.       plop(0,workpage);           { copy window overlay to workpage }
  94.  
  95.       restorescreen;inverseon;blinkon;
  96.       footer('Are You sure that you want to exit? (Y/N) ---> ');
  97.       inverseoff;blinkoff;
  98.  
  99.       repeat
  100.          read(kbd,ch);
  101.       until upcase(ch) in ['Y','N'];
  102.  
  103.       if upcase(ch) = 'Y' then bail := true;
  104.       restorescreen;
  105.    until bail;
  106.  
  107. {
  108.   WindowExit is called when the program is complete.  This resets
  109.   all of the goodies changed by the program.
  110. }
  111.    setcursoron;windowexit;
  112.  
  113. end.
  114.